package com.crm.customers.dao;

import java.util.List;
import java.util.Map;

import com.crm.customers.model.CustomerInfo;


public interface CustomerDao {
	
	/**
	 * 验证同行业内该名称及商号是否存在
	 */
	public int getCustomerInfoVerifyCount(CustomerInfo info);
	
	/**
	 * 保存客户基本信息
	 * @param cinfo
	 * @return
	 */
	public CustomerInfo insertCustomerInfo(CustomerInfo cinfo);
	
	/**
	 * 修改客户基本信息
	 * @param cinfo
	 * @return
	 */
	public  CustomerInfo updateCustomerInfo(CustomerInfo cinfo);
	
	/**
	 *  取得客户基本信息
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerInfoList(CustomerInfo cinfo) ;
	
	/**
	 *  取得客户基本信息
	 * @param obj
	 * @return
	 */
	public CustomerInfo getCustomerInfoById(Long id);
	
	
	/**
	 * 根据客户会员编码模糊查询客户名称
	 * @param keyWord
	  * @param state (0 模糊匹配  1 精确匹配)
	 * @return
	 */
	public List<CustomerInfo> getCustomerByKeyWord(CustomerInfo cinfo);
	
	/**
	 * 更新客户状态
	 * @param cinfo
	 * @return
	 */
	public int updateCustomerState(CustomerInfo cinfo); 
	
	 /**
	 * 修改客户名称
	 * @param cinfo 
	 * @return
	 */
	public  int updateCustomerName(CustomerInfo cinfo); 
	/**
	 * 今日已录入客户
	 * @param cinfo
	 * @return
	 */
	public int getCustomerTypeinCount(CustomerInfo cinfo);

	/**
	 *   根据contentid和category验证申请是否已存在
	 * @param cdinfo
	 * @return
	 */
	//public int getApproveRecordByid(String contentid,int category);
	/**
	 *   审批记录查询
	 * @param cdinfo
	 * @return
	 */
	//public List<ApproveRecord> getApproveRecordList(ApproveRecord ard,int pageNo, int pageSize);
	/**
	 * 修改客户商号
	 * @return
	 */
	public int updateCustomerFirm(CustomerInfo cinfo);
	
	/**
	 * 根据ID差行业CODE
	 * @param contentid
	 * @return
	 */
	public String getCallingCodeById(Long contentid);
	
	/**
	 * 修改客户创建人
	 * @return
	 */
	public int updateCustomerCreateUser(CustomerInfo cinfo);
	/**
	 * 根据主键ID 修改
	 * @param cinfo
	 * @return
	 */
	int updateByPrimaryKeySelective(CustomerInfo cinfo);
	/**
	 *  取得客户基本信息列表
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerInfoAllList(CustomerInfo cinfo) ;
	
	/**
	 * 根据条件获取录入的客户/简历列表（带分页）
	 * */
	public List<CustomerInfo> getBookingCustomerInfoList(CustomerInfo cinfo);
	
	/**
	 * 根据条件获取今日已联系/明日已预约列表（带分页）
	 * */
	public List<CustomerInfo> getLXCustomerInfoList(CustomerInfo cinfo);
	
	
	/**
	 * 修改客户category需求
	 * */
	public int updateCustomerCategory(CustomerInfo cinfo);
	
	/**
	 * 资源转移列表
	 * */
	public List<CustomerInfo> transformlist(CustomerInfo cinfo);
	
	/**
	 * 资源转移转移全部
	 * */
	public int transCustomerAll(CustomerInfo cinfo);
	
	/**
	 * 根据条件获取资源总条数
	 * */
	public int getCustomerInfoTotalSizeByParams(CustomerInfo info);
	
	/**
	 * 取得所有待通知客户
	 * @return
	 */
	public List<CustomerInfo> getAllRemindCustomer();
	
	/**
	 * 添加个人合同使用的证书搜索。<br>
	 * 参数包括：成熟等级，关键字。<br>
	 * 关键字搜索的是名字，身份证号码，手机号码，职称。<br>
	 * 搜索的证书只能是在所有用户的我的库里，公共库中的内容不能被搜索到。<br>
	 * 已经创建过合同，且合同未到期的个人客户也不能被搜索到。<br>
	 * */
	public List<CustomerInfo> getContractCustomerList(CustomerInfo info);
	
	/**
	 * 获取个人某种资源总条数<br>
	 * CustomerInfo中要含有：uid,type
	 * */
	public int getResourceCount(CustomerInfo info);
	
	/**
	 * 获取所有已经超期的用户
	 * */
	public List<CustomerInfo> getAllDiscardCustomer();
	
	/**
	 * 更新超期用户状态
	 * */
	public int updateAllDiscardCustomer();
	
	/**
	 * 
	 * */
	public List<CustomerInfo> getAllwaitForAnchoredList(CustomerInfo ci);
	
	/**
	 * 根据电话号码获取用户列表
	 * */
	public List<CustomerInfo> getCusListByTel(CustomerInfo ci);
	
	/**
	 * 新.获取客服列表
	 * */
	public List<CustomerInfo> getCustomerServiceListByParams(CustomerInfo ci);
	/**
	 * 获取待挂垫款总额
	 * */
	public int getAllwaitForAnchoredMoney(CustomerInfo info);
	
	/**
	 *  取得资质客户列表
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerQualificationInfoList(CustomerInfo cinfo) ;
	
	/**
	 *  取得资质客户列表
	 * @param cinfo
	 * @return
	 */
	public List<CustomerInfo> getCustomerQualificationUserList(CustomerInfo cinfo) ;
	/**
	 *  取得已聘用未聘用的资质人员
	 * @param info
	 * @return
	 */
	public List<CustomerInfo> getQualificationCustomerList(CustomerInfo info) ;
	
	/**
	 *  取得挂靠企业
	 * @param info
	 * @return
	 */
	public List<CustomerInfo> getGaokaoCustomerList(CustomerInfo info) ;
	/**
	 * 获取相同身份证数量内容
	 * @param info
	 * @return
	 */
	public int getIdCardCount(CustomerInfo info);
	
	
	public List<CustomerInfo> getQualificationUserList(CustomerInfo cinfo) ;
	
	
	
	public CustomerInfo getQualificationCustomerInfo(CustomerInfo cinfo);
	
	/**
	 * 根据业务类型查询企业
	 * @param info
	 * @return
	 */
	public List<CustomerInfo> getCustomerByBiz(CustomerInfo info) ;
	
	
	
	public int getQualificationCustomerSize(Long customerId);
	
}
